Introduction Welcome to the world of Ada, a relatively new programming language with the force of the United States Department of Defense behind it. Even though Ada will, in many cases, be mandated by the government for certain projects, it is a powerful enough language that it would probably be successful in the marketplace if it were left to compete on its own. ADA IS A VERY LARGE LANGUAGE _________________________________________________________________ By its very nature, Ada is a large language that is relatively difficult to compile because it does so many checks at compile time. It has been estimated that a fully validated Ada compiler requires about 50 man years to write and debug. This is an indication that there will not be a plethora of Ada compilers, and they will not be small, easy to use programs, as a Pascal or a C compiler can be. In addition, the Department of Defense requires any implementation that is called Ada, to be a complete system. No subsets are allowed. Due to the great size of the Ada language, this tutorial will be divided into two parts. Beginning Ada will cover most of the essentials of Ada, and will instruct you in the use of Ada in much the same way that you would use Pascal. If you complete only part 1, you will be able to write useful programs in Ada, but you will lack the elegance of the advanced features of Ada which are covered in Part 2 (Advanced Ada) of this tutorial. Since Ada was intended to be a large, flexible language, it would be well for you to complete both parts of this tutorial. ADA IS NOT JUST ANOTHER LANGUAGE _________________________________________________________________ Ada was developed to be more than just another programming language, since it embodies many of the modern principles of software engineering. For example, the concept of information hiding is designed into the language, rather than being implemented as a programming technique. Ada was also designed for developing large software systems, and is therefore applicable for use in programs containing hundreds of thousands, or even millions of lines of source code. It is obvious that a single person could not write such a large program in a reasonably short time, a team effort being required to complete it. Ada is especially well suited for use in a team environment. Page I-1 Introduction HOW IS THIS TUTORIAL WRITTEN? _________________________________________________________________ A good reference manual and a good tutorial are mutually exclusive entities, a reference manual being terrible for learning the material, and a tutorial being very poor as a reference following the learning cycle. This tutorial is written as a tutorial, and no effort was given toward making it a reference manual. It is therefore imperative that the student studies the lessons in the order given in the tutorial. Many new concepts, as taught in this tutorial, use concepts illustrated earlier, and the earlier concepts must be understood in order to push profitably ahead. The example programs are all complete programs that can be compiled and executed on any computer with a validated Ada compiler. None of the example programs are fragments, so you have a complete program before you with all of the code needed to execute each new concept as it is studied. WHAT IF YOU DON'T HAVE AN ADA COMPILER? _________________________________________________________________ Following the code for each example program, you will find a list of the results, in the form of Ada comments, that were obtained by executing the program with a validated Ada compiler. Actually, at least five different compilers were used on all of these files, so the results should be reliable. The result of execution can be used for either of two purposes, the first being to check the output of your compiler for conformance to the standard, and the second being to give you the execution result if you don't have an Ada compiler. Occasionally, you may wish to see the results without actually going through the compile, link, load, and run steps, so the listed output can be a time saver in those cases. Every attempt was made to illustrate good programming practice with every example program, with the exception of two programs that are intended to show poor programming practice. As you study the example programs in this tutorial, you will therefore be developing a good programming style through observation. WHO WAS THIS TUTORIAL WRITTEN FOR? _________________________________________________________________ This tutorial was written especially for two groups of programmers, those with expertise in FORTRAN, and those with expertise in a modern structured language such as Pascal, C, or Modula-2. A person with little or no programming experience will have a difficult time working his way through this tutorial because of the size and complexity of Ada, but with enough patience, even this person can learn Ada with the use of this tutorial. Page I-2 Introduction The first group probably consists of mature programmers, those that have been in industry for many years and have been using FORTRAN for a large number of those years. This author is a member of this group, having begun programming in FORTRAN II in 1961. The experienced FORTRAN programmer will find the concept of the data type to be a new and seemingly troublesome addition to a programming language, so careful attention is paid to explaining the details of this concept and other concepts that would be new to him. The second group would consist of those programmers that have experience with a modern structured language, such as Pascal, and already understand the concept of the data type, but find the newer additions to Ada totally foreign. This author is also a member of this second group, having programmed in Pascal, C, C++, and Modula-2 exclusively for about eight years now, with Ada being added to the list about four years ago. WHICH GROUP ARE YOU? _________________________________________________________________ If you are an experienced FORTRAN programmer, you will need nearly all of the details given in each chapter, but if you are of the modern structured language school, you will only need a small part of the details in some of the chapters, and can therefore read them very quickly. A word of caution is in order however, because some of the details seem to be very much like Pascal but in reality are very different, so it would pay to look closely at even those things that you are already proficient with. The experienced C programmer will probably be a bit frustrated with the attention to details required by the Ada compiler. You will not have your favorite "tricks" available to fool the compiler into doing something out of the ordinary. The Ada compiler cannot be fooled. THE PROGRAMMING EXERCISES _________________________________________________________________ One or more programming exercises are given at the end of each chapter for your benefit and instruction. Each exercise is chosen to force you to exercise your new knowledge immediately upon completing the chapter at hand, and should be completed before continuing on to the next chapter. If you do the exercises, you will gain experience in writing Ada, rather than simply reading Ada, and your overall comprehension will be greatly improved. You will gain much knowledge simply by understanding the compiler error messages you receive during compilation. You can be assured that you will get compiler error messages. Some of the exercises even tell you to try something to see if you get an error message. Page I-3 Introduction Answers to all of the programming exercises are given in the ANSWERS directory of the source disk. The file naming format is CHnn_ml.ADA, with "nn" referring to the chapter number, "m" referring to the specific exercise from that chapter, and the "l" indicating that more than one answer is given. The answer to programming exercise number 1 from chapter 4 would be in the file named CH04_1.ADA, and if there were two answers they would be in the files named CH04_1A.ADA and CH04_1B.ADA and each would have it own results in comments. It would be to your advantage to attempt the exercises before you look at these files. These files can be compiled and executed, but due to their nature, they may have compile or runtime errors in them since they are meant to illustrate some of the problems you can have. The results of compiling and running them will be reported at the end of the files in comments in much the same way that the example programs are commented. Some of the programming exercises have been carefully chosen to illustrate a few additional topics to augment the material taught in the chapter itself. You may find yourself a bit confused at times, so you should go directly to the supplied answer file for clarification and help in solving the problem. You should spend a little time trying to solve the problem yourself first. YOUR OWN EXERCISES _________________________________________________________________ Many of the example programs do not produce any output. This has been done on purpose to force you to write some output statements to see some of the results. You should work from a backup copy of the distribution disk, and purposely corrupt some of the programs, attempting to do strange things to see if you understand the material covered in the text. One of the initial requirements of this tutorial, as outlined at the outset of this project, was that all of the example programs would be compilable without error. This makes it difficult to illustrate some of the compiler checks, so it is up to you to see these errors yourself. If the error is introduced by you, the compiler error message should be easily decipherable by you. Keep in mind that some of the answers to the programming exercises will have compile or runtime errors. As in all endeavors, you will get out of this tutorial as much as you are willing to put into it. RECOMMENDED READING LIST _________________________________________________________________ The following books are recommended to be studied in the given order. All three books should be obtained if you plan to study Ada very seriously. Page I-4 Introduction 1. Barnes, J. G. P.; "Programming In Ada, Third Edition", Addison-Wesley. This book defines the language at the lowest level but teaches no software engineering. This is the best book for the new student to study to begin using Ada. It is best described as a reference manual for the Ada programming language. 2. American National Standard reference manual for the Ada programming language; ANSI/MIL-STD-1815A-1983. This is the definition of the Ada language as sponsored by the Department of Defense. It is often referred to as the Ada Language Reference Manual (LRM) in the literature. It is extremely thorough, but remarkably easy to read after you have gained at least some insight into the Ada language. It can be ordered from; American National Standards Institute, Inc. 1430 Broadway, New York, NY 10018 The price as of this printing is $15.00 + $4.00 P & H. 3. Booch, Grady; "Software Engineering with Ada, Second Edition", Benjamin Cummings. This book assumes you have a fair grasp of Ada and/or programming in general, and leads you into the use of Ada for a large project with a plurality of programmers. It is an excellent book to study software engineering, but a poor choice to begin with. Page I-5